package oj;

//对称二叉树：给你一个二叉树的根节点 root ， 检查它是否轴对称。
public class Solution_101 {
    //判断两个树是否是镜像的
    public static boolean isMirror(TreeNode p, TreeNode q){
        if(p == null && q == null){
            return true;
        }
        if(p == null || q == null){
            return false;
        }
        if(p.val != q.val){
            return false;
        }
        boolean r = isMirror(p.left,q.right);
        if(r == false){
            return false;
        }
        r = isMirror(p.right,q.left);
        if(r == true){
            return true;
        }else{
            return false;
        }
        //也可以直接写为
//        return p.val == q.val && isMirror(p.left,q.right) && isMirror(p.right,q.left);
    }
    public boolean isSubtree(TreeNode root) {
        //该树是否是轴对称的
        //可以看作是，除结点之外的左子树和右子树是镜像的
        if(root == null){
            return true;
        }
        //使用了 root.left 和 root.right 所以隐含信息就是 root != null
        return isMirror(root.left,root.right);
    }
}
